"""
闭包：
    1、嵌套函数
    2、内部函数引用了外部函数的变量
    3、返回值是内部函数
"""


# 变量/函数 的查找链：内层函数--->外层函数--->全局变量--->内建变量（系统 builtins）--->None

def outer1():
    a = 1
    print(a)

    def inner1():
        b = 2
        # b += a  # 内部函数可以使用外部函数的变量
        nonlocal a  # 如果想修改外部函数的变量，需要在内部函数中添加：nonlocal
        a += b
        print(a)

    print(locals())  # locals():函数内部查看局部变量
    print(inner1)
    # inner1()
    return inner1


print(outer1)
outer1()()
# print(locals())
